package Day_0130;

/**
 * @author zxc
 * @date 2023/01/30 16:40
 **/
public class HashCode {
    public static void main(String[] args) {
        /**
         * java的集合有两类，一类是List，还有一类是Set。
         * List集合特点 ：有序可重复，Set集合特点 ：后者无序不重复。
         * 当我们在set中插入的时候怎么判断是否已经存在该元素呢，可以通过equals方法。
         * 但是如果元素太多，用这样的方法就会比较满。
         *
         * 哈希算法来提高集合中查找元素的效率。
         * 概念 ：（即，hashcode方法代表了每个对象都拥有其所对应的哈希码;）
         * hashCode方法可以这样理解：它返回的就是根据对象的内存地址换算出的一个哈希值;
         * 这种方式将集合分成若干个存储区域，每个对象可以计算出一个哈希码，
         * 可以将哈希码分组，每组分别对应某个存储区域，根据一个对象的哈希码就可以确定该对象应该存储的那个区域。
         *
         * Set集合添加新元素的过程
         * （1）当集合要添加新的元素时，先调用这个元素的hashCode方法，就一下子能定位到它应该放置的物理位置上。
         * （2）如果这个位置上没有元素，它就可以直接存储在这个位置上，不用再进行任何比较了；
         * （3）如果这个位置上已经有元素了，就调用它的equals方法与新元素进行比较，相同的话就不存了，
         * （4）不相同就散列其它的地址。
         */
    }
}
